🐌 QA Delayer - Chrome Extension
Специализированный плагин для QA тестирования - имитация задержек и HTTP ошибок для тестирования производительности и обработки ошибок.
🚀 Возможности
- 📡 Медленное соединение: универсальная задержка отправки запросов
- 🐌 Медленный сервер: точные задержки ответа для ERVU доменов + localhost
- ❌ Имитация HTTP ошибок: 400, 401, 403, 404, 422, 429, 500, 502, 503, 504, timeout
- 🎭 Мокинг ответов: полная замена ответа сервера на настраиваемый мок
- 🔧 Поддержка всех типов запросов: XHR, fetch, axios
- 🎯 Гибкие фильтры: RegExp паттерны для выборочного воздействия
- 🧪 Живое тестирование: проверка паттернов прямо в интерфейсе
- 📝 Подробное логирование: детальная информация о задержках и моках
- 🔄 Сброс настроек: быстрый возврат к дефолтным значениям
🔄 Режимы работы
⏱️ Задержка запросов
📡 Медленное соединение
Универсальная имитация плохого интернет-соединения
Клиент ──задержка 10сек──> Сервер ──> Быстрый ответ
- Поведение: запрос не отправляется указанное время
- DevTools: запрос появляется только через 10 сек и быстро выполняется
- Совместимость: работает для ВСЕХ доменов
- Использовать для:
- Тестирования таймаутов бэкенда
- Имитации плохой связи
- Проверки retry логики
🐌 Медленный сервер
Точная имитация медленно отвечающего сервера
Клиент ──> Сервер ──задержка 10сек──> Клиент (точно через 10сек)
- Поведение: HTTP-запрос выполняется сразу, JavaScript ждет указанное время
- DevTools: запрос появляется сразу с реальным временем (например, 64мс)
- JavaScript: получает ответ точно через указанное время (10сек)
- Совместимость: только для поддерживаемых доменов
- Поддерживаемые домены:
- Использовать для:
- Точного тестирования таймаутов приложения
- Проверки UX при долгих операциях
- Отладки лоадеров и индикаторов прогресса
❌ Имитация HTTP ошибок
Полная подмена ответа ошибкой (запрос не выполняется)
Клиент ──X──> ❌ HTTP 500 Error (без обращения к серверу)
Доступные ошибки:
- 400 - Bad Request (неправильный запрос)
- 401 - Unauthorized (не авторизован)
- 403 - Forbidden (доступ запрещен)
- 404 - Not Found (не найдено)
- 422 - Unprocessable Entity (невалидные данные)
- 429 - Too Many Requests (превышен лимит)
- 500 - Internal Server Error (ошибка сервера)
- 502 - Bad Gateway (плохой шлюз)
- 503 - Service Unavailable (сервис недоступен)
- 504 - Gateway Timeout (таймаут шлюза)
- ⏰ Timeout - зависает навсегда
🎭 Мокинг ответов
Полная замена ответа сервера настраиваемым моком (запрос не выполняется)
Клиент ──X──> 🎭 Мок-ответ (без обращения к серверу)
Настраиваемые параметры:
- HTTP статус: любой код от 100 до 599 (200, 404, 500...)
- Статус текст: "OK", "Not Found", "Internal Server Error"...
- Заголовки: JSON объект с заголовками ответа
- Тело ответа: любой контент (JSON, HTML, текст)
Автоматическая совместимость:
- fetch(): возвращает корректный Response объект
- XMLHttpRequest: эмулирует события и свойства XHR
- axios: возвращает объект в формате axios response
Использовать для:
- Разработки фронтенда когда бэкенд не готов
- Замены реального 410/500 ответа на нужный мок
- Тестирования различных сценариев без изменения сервера
- Имитации сложных API ответов
📦 Установка
- Скачай или склонируй проект
- Открой Chrome → Настройки → Расширения
- Включи "Режим разработчика"
- Нажми "Загрузить распакованное расширение"
- Выбери папку с проектом
- Готово! 🎉
⚙️ Использование
Быстрый старт
- Кликни на иконку плагина в браузере
- Включи плагин ✅
- Выбери тип воздействия:
- ⏱️ Задержка запроса
- ❌ HTTP ошибка
- 🎭 Мок ответа
- Настрой параметры:
- Для задержки: режим (соединение/сервер) + время в миллисекундах
- Для ошибок: тип ошибки (400, 500, timeout...)
- Для мокинга: статус, заголовки, тело ответа
- Добавь URL паттерн или оставь пустым для всех запросов
- Сохрани настройки или Сбрось к дефолтным
Автоматический fallback
Если выбран 🐌 Медленный сервер, но домен не поддерживается:
⚠️ Domain not supported for slow server, using slow connection instead
Плагин автоматически переключится на 📡 Медленное соединение.
Примеры паттернов
/service/ervu-person-registry/conversion/v1/log # Точный путь
.*api.* # Все API запросы
^https://localhost:8080.* # Конкретный домен
/users/\d+ # RegExp: /users/123
Тестирование паттернов
В popup используй поле "Тест URL":
Введи: /service/ervu-person-registry/conversion/v1/log
Результат: "URL подходит ✓" или "URL не подходит ✗"
💡 Примеры использования
Точное тестирование медленного сервера
Домен: ervu-dev.ervu.rt-sk.ru или localhost:3000
Тип: ⏱️ Задержка запроса
Режим: 🐌 Медленный сервер
Задержка: 5000ms
Паттерн: .*conversion.*
Результат: В DevTools запрос выполнится за 64мс,
но JavaScript получит ответ через 5000мс
Тестирование обработки ошибок авторизации
Тип: ❌ HTTP ошибка
Ошибка: 401 - Unauthorized
Паттерн: /api/user/.*
Результат: Все запросы к пользователю вернут ошибку 401
Мокинг API когда бэкенд не готов
Тип: 🎭 Мок ответа
HTTP статус: 200
Заголовки: {"Content-Type": "application/json"}
Тело: {"inc1342count": "15", "defectResolveEnable": true}
Паттерн: /api/defect/info
Результат: Вместо реального 410 получишь мок-данные
Замена ошибочного ответа сервера
Тип: 🎭 Мок ответа
HTTP статус: 410
Тело: {"error": "Resource has been moved permanently"}
Паттерн: /service/legacy-api/.*
Результат: Имитация корректного 410 ответа вместо багнутого
Локальная разработка
Домен: localhost:3000
Режим: 🐌 Медленный сервер
Задержка: 3000ms
Результат: Локальные API будут отвечать точно через 3 секунды
🛠 Технические детали
Как работают задержки
📡 Медленное соединение (универсальный):
// Задерживаем отправку запроса
await delay(5000);
return fetch('/api');
🐌 Медленный сервер (для поддерживаемых доменов):
// Отправляем запрос сразу, но задерживаем обработку
const startTime = Date.now();
const response = await fetch('/api');
const actualDuration = Date.now() - startTime;
// Ждем до полной задержки
const remainingDelay = Math.max(0, delayMs - actualDuration);
if (remainingDelay > 0) {
await delay(remainingDelay);
}
return response;
🔍 Отладка
Консоль браузера
При работе плагина увидишь:
[QA Delayer] Ready - call qaDelayerDebug() for info
# Медленное соединение:
[QA Delayer] 📡 Simulating slow connection for POST /api/search - delaying request by 5000ms
[QA Delayer] 📡 Now sending delayed XHR POST /api/search
# Медленный сервер:
[QA Delayer] 🐌 Simulating slow server response for: POST https://ervu-dev.ervu.rt-sk.ru/api/search - 20000ms
[QA Delayer] 🐌 XHR completed in 64ms, waiting 19936ms more for total 20000ms
# Fallback:
[QA Delayer] ⚠️ Domain not supported for slow server, using slow connection instead: https://external-api.com/data
# Ошибки:
[QA Delayer] ❌ Simulating 500 error for axios POST /api/upload
[QA Delayer] ❌ Simulating timeout error for fetch GET /api/status
# Мокинг:
[QA Delayer] 🎭 Returning mock response for fetch GET /api/defect/info
[QA Delayer] 🎭 Creating mock response for /api/users: {status: 200, body: "..."}
[QA Delayer] 🎭 Returning mock response for axios.post /api/search
Функции отладки
В консоли браузера доступны:
qaDelayerDebug() // Показать текущие настройки
qaDelayerTest("/api/users") // Проверить подходит ли URL
Если не работает
- Проверь консоль на ошибки и логи
- Убедись что плагин активен (статус в popup)
- Проверь паттерны через тестер в popup
- Для медленного сервера убедись что домен поддерживается
- Для localhost используй http://localhost:PORT или https://localhost:PORT
🎯 Сценарии использования
QA тестировщику ERVU:
- 🎯 Медленный сервер: точное тестирование таймаутов на dev/cert окружениях
- 📡 Медленное соединение: имитация плохой связи для всех запросов
- 🏠 Localhost: тестирование локальных разработок с теми же условиями
- ⚡ Fallback: работа на любых сайтах без дополнительных настроек
- 🔒 Ошибки: полная проверка обработки 4xx/5xx статусов
- 🎭 Мокинг: тестирование с правильными данными когда бэк возвращает 410
- 🔄 Быстрый сброс: возврат к дефолтным настройкам одной кнопкой
Frontend разработчику:
- 🎨 Отладить состояния загрузки и error states
- 📊 Проверить UX при медленных ответах сервера vs медленном соединении
- ⚡ Различить проблемы сети (64мс в DevTools) и логики приложения (20сек ожидания)
- 🔄 Отработать retry механизмы при разных типах задержек
- 🎭 Проверить корректность лоадеров и таймеров
- 🔧 Мокинг API: разработка фронтенда без готового бэка
- 📋 Тестирование разных сценариев: быстрая смена ответов для edge cases
- 🎯 Дебаг конкретных багов: воспроизведение проблемных ответов сервера
🌟 Уникальные особенности
Специализация под ERVU
- Точные permissions только для нужных доменов
- Автоматическое определение относительных путей
- Localhost support для полного цикла разработки
- Умный fallback для неподдерживаемых доменов
Реалистичность тестирования
- Медленный сервер: видишь реальное время сети (64мс) + точную задержку приложения
- Медленное соединение: видишь полную задержку в DevTools
- Правильные логи: различаешь что именно замедляется
Developer Experience
- Живая валидация паттернов в UI
- Подробные логи с временными метриками
- Автоматические подсказки по совместимости режимов
- Отладочные функции в консоли браузера
- Умные моки: автопарсинг JSON, корректные заголовки
- Кнопка сброса: быстрый возврат к чистому состоянию
- Гибкие настройки: от простого статуса до сложных API ответов
💡 Рекомендации по использованию:
- 📡 Медленное соединение: используй для тестирования сетевых таймаутов и retry логики
- 🐌 Медленный сервер: используй на ERVU доменах и localhost для точного тестирования логики приложения
- 🎭 Мокинг: незаменим когда бэк возвращает 410 или еще не готов
- 🔍 DevTools: при медленном сервере смотри на реальное время запроса vs время ожидания в коде
- ⚠️ Fallback: если видишь предупреждение о неподдерживаемом домене - это нормально, работает медленное соединение
- 🧪 Тестирование: комбинируй все режимы для полного покрытия сценариев
- 📊 Метрики: используй логи для понимания реального vs искусственного времени
- 🔄 Быстрый сброс: не накапливай сложные настройки, сбрасывай к дефолтным
Создано специально для QA команды ERVU 🧪✨

Добавить комментарий